Haptics is a tactile and force feedback technology that takes advantage of a user's sense of touch by applying haptic feedback effects (i.e., “haptic effects”), such as forces, vibrations, and motions, to the user. Devices, such as mobile devices, touchscreen devices, and personal computers, can be configured to generate haptic effects. In general, calls to embedded hardware capable of generating haptic effects (such as actuators) can be programmed within an operating system (“OS”) of the device. These calls specify which haptic effect to play. For example, when a user interacts with the device using, for example, a button, touchscreen, lever, joystick, wheel, or some other control, the OS of the device can send a play command through control circuitry to the embedded hardware. The embedded hardware then produces the appropriate haptic effect.
A haptic effect developer can author a haptic effect for the device, and the device can be configured to output the haptic effect. Alternately, a device can receive input, such as audio input, video input, or any other type of sensor input, can convert the input into a haptic effect, and can output the haptic effect (or can convert the input into haptic content and can receive the haptic content along with other audio and/or video content, via mixing or streaming). In either scenario, different types of hardware can be capable of generating different types of haptic effects due to different hardware characteristics. For example, different types of actuators (such as eccentric rotating mass motor actuators, linear resonant actuators, and piezoelectric actuators) are capable of generating different types of haptic effects due to different electromechanical characteristics of the different actuators. In general, a haptic effect developer that wishes to author a haptic effect for a specific type of hardware is required to tailor the haptic effect for the specific hardware. If the haptic effect developer wishes to support multiple hardware types, the haptic effect developer generally has to author different haptic effects, in order to provide an optimal haptic experience for each hardware type. This can result in additional design time and effort involved with authoring haptic effects.